package com.hd.sup.modules.alarm.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hd.sup.modules.alarm.model.AlarmDailyStatis;
import com.hd.sup.modules.poi.model.EnterpriseAlarmExport;
import com.hd.sup.modules.poi.model.RegionAlarmExport;
import com.hd.sup.modules.poi.model.RegionHandleRateAlarmExport;
import com.hd.sup.modules.vehicle.model.VehicleAlarmDailyStatis;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 报警基础数据表 | 企业编号 报警类型  统计时间 服务类
 * </p>
 *
 * @author chentl123
 * @since 2020-12-28
 */
public interface IAlarmDailyStatisService extends IService<AlarmDailyStatis> {


    /**
     * @return Map<String, Object>
     * @author chentl
     * @description 获取报警类型数据
     * @date 2020/12/28 1:22 下午
     * @params [currentDateStr, deptIds]
     */
    Map<String, Object> getDailyAlarmTypeSum(String currentDateStr, List<String> deptIds);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 获取车辆告警趋势 近 3 、7、 30天
     * @date 2020/12/28 6:53 下午
     * @params [alarmDailyStatis]
     */
    List<Map<String, Object>> getTrendData(AlarmDailyStatis alarmDailyStatis);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 查询报警企业处置率top5
     * @date 2020/12/29 3:40 下午
     * @params [deptIds]
     */
    List<Map<String, Object>> getHandleRateTop5(List<String> deptIds);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 获取报警企业信息分页数据
     * @date 2020/12/30 1:42 下午
     * @params [page, alarmDailyStatis]
     */
    List<Map<String, Object>> getAlarmEnterprisePage(Page<Map<String, Object>> page, AlarmDailyStatis alarmDailyStatis);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 统计区域报警分页信息
     * @date 2020/12/31 9:15 上午
     * @params [page, alarmDailyStatis]
     */
    List<Map<String, Object>> getAlarmRegionPage(Page<Map<String, Object>> page, AlarmDailyStatis alarmDailyStatis);

    /**
     * @return java.util.List<com.hd.sup.modules.export.model.RegionAlarmExport>
     * @author chentl
     * @description 统计区域报警导出数据
     * @date 2021/2/23 10:47 上午
     * @params [page,alarmDailyStatis]
     */
    List<RegionAlarmExport> getAlarmRegionExport(Page<AlarmDailyStatis> page, AlarmDailyStatis alarmDailyStatis);

    /**
     * @return java.util.List<com.hd.sup.modules.poi.model.EnterpriseAlarmExport>
     * @author chentl
     * @description 统计企业报警导出数据
     * @date 2021/2/23 11:02 上午
     * @params [page, alarmDailyStatis]
     */
    List<EnterpriseAlarmExport> getAlarmEnterpriseExport(Page<AlarmDailyStatis> page, AlarmDailyStatis alarmDailyStatis);


    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 统计处置率报警分页信息
     * @date 2020/12/31 10:20 上午
     * @params [page, alarmDailyStatis]
     */
    List<Map<String, Object>> getRegionAlarmHanderRatePage(Page<Map<String, Object>> page, AlarmDailyStatis alarmDailyStatis);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 查询企业处置率报警分页表格
     * @date 2020/12/31 10:58 上午
     * @params [page, alarmDailyStatis]
     */
    List<Map<String, Object>> getEnterpriseAlarmHanderRatePage(Page<Map<String, Object>> page, AlarmDailyStatis alarmDailyStatis);

    /**
     * @return java.util.List<com.hd.sup.modules.alarm.model.AlarmDailyStatis>
     * @author chentl
     * @description 获取当天统计数据
     * @date 2021/1/11 9:41 上午
     * @params [currentDate]
     */
    List<AlarmDailyStatis> getTodayStatisData(String currentDate);

    /**
     * @return void
     * @author chentl
     * @description 根据 enterprise_no，statis_date,alarm_type 更新指定报警统计数据
     * @date 2021/1/11 9:47 上午
     * @params []
     */
    void refreshAlarmDailyStatis(AlarmDailyStatis alarmDailyStatis);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 查询分析报告需要的报警数据
     * @date 2021/2/5 11:21 上午
     * @params [alarmDailyStatis]
     */
    List<Map<String, Object>> trendDataForReport(VehicleAlarmDailyStatis alarmDailyStatis);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 处置率最低的 Top20 企业排行
     * @date 2021/2/19 2:24 下午
     * @params [alarmDailyStatis, timeFlag, deptIds]
     */
    Map<String, Object> getWorstEnterpriseHandleRateTop20(VehicleAlarmDailyStatis alarmDailyStatis, String timeFlag, List<String> deptIds);

}
